/*

    functions.cpp - a collection of multi-objective test functions
    Author Julio Agustin Barrera Mendoza
    Copyright (C) 2009 CINVESTAV-IPN.

    This program is free software; you can redistribute it and/or modify it 
    under the terms of the GNU General Public License as published by 
    the Free Software Foundation; either version 2 of the License, 
    or (at your option) any later version.

    This program is distributed in the hope that it will be useful, 
    but WITHOUT ANY WARRANTY; without even the implied warranty of 
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 
    General Public License for more details.

    You should have received a copy of the GNU General Public License along 
    with this program;  if not, write to the 
    Free Software Foundation, Inc., 59 Temple Place, 
    Suite 330, Boston, MA 02111-1307 USA

 */

#include "functions.h"

// ------------------------------------------------------------------
// FUNCTION zdt1
// ------------------------------------------------------------------

Array zdt1(const Array &x)
{
  unsigned int i, variables = x.size();
  long double g = 0.0, h = 0.0;
  Array result(2);

  for (i = 0; i < variables; i++)
    g += x[i];

  g = 1.0 + 9.0 * g / (variables - 1.0);
  h = 1.0 - sqrtl(x[0] / g);

  result[0] = x[0];
  result[1] = g * h;

  return result;
}



